Linus, patch below adds an obvious helper function and converts
several places to using it. For one thing, it's cleaner, for another -
we won't have to change these places when we add refcounting on struct
superblock. Actually, it used be a part of invalidate_device() patch.
Please, apply it.


diff -urN S5-pre4/drivers/block/blkpg.c S5-pre4-is_mounted/drivers/block/blkpg.c
--- S5-pre4/drivers/block/blkpg.c       Fri Feb 16 09:58:32 2001
+++ S5-pre4-is_mounted/drivers/block/blkpg.c    Sun May 20 03:15:57 2001
@@ -157,8 +157,7 @@
 
        /* partition in use? Incomplete check for now. */
        devp = MKDEV(MAJOR(dev), minor);
-       if (get_super(devp) ||          /* mounted? */
-           is_swap_partition(devp))
+       if (is_mounted(devp) || is_swap_partition(devp))
                return -EBUSY;
 
        /* all seems OK */
diff -urN S5-pre4/drivers/char/raw.c S5-pre4-is_mounted/drivers/char/raw.c
--- S5-pre4/drivers/char/raw.c  Sat Apr 28 02:12:50 2001
+++ S5-pre4-is_mounted/drivers/char/raw.c       Sun May 20 03:16:12 2001
@@ -131,7 +131,7 @@
         */
        
        sector_size = 512;
-       if (get_super(rdev) != NULL) {
+       if (is_mounted(rdev)) {
                if (blksize_size[MAJOR(rdev)])
                        sector_size = blksize_size[MAJOR(rdev)][MINOR(rdev)];
        } else {
diff -urN S5-pre4/drivers/md/md.c S5-pre4-is_mounted/drivers/md/md.c
--- S5-pre4/drivers/md/md.c     Sat May 19 22:46:31 2001
+++ S5-pre4-is_mounted/drivers/md/md.c  Sun May 20 03:16:38 2001
@@ -1097,7 +1097,7 @@
        }
        memset(rdev, 0, sizeof(*rdev));
 
-       if (get_super(newdev)) {
+       if (is_mounted(newdev)) {
                printk("md: can not import %s, has active inodes!\n",
                        partition_name(newdev));
                err = -EBUSY;
@@ -1735,7 +1735,7 @@
        }
  
        /* this shouldn't be needed as above would have fired */
-       if (!ro && get_super(dev)) {
+       if (!ro && is_mounted(dev)) {
                printk (STILL_MOUNTED, mdidx(mddev));
                OUT(-EBUSY);
        }
diff -urN S5-pre4/include/linux/fs.h S5-pre4-is_mounted/include/linux/fs.h
--- S5-pre4/include/linux/fs.h  Sat May 19 22:46:36 2001
+++ S5-pre4-is_mounted/include/linux/fs.h       Sun May 20 03:18:47 2001
@@ -1301,6 +1301,15 @@
 extern struct file_system_type *get_fs_type(const char *name);
 extern struct super_block *get_super(kdev_t);
 extern void put_super(kdev_t);
+static inline int is_mounted(kdev_t dev)
+{
+       struct super_block *sb = get_super(dev);
+       if (sb) {
+               /* drop_super(sb); will go here */
+               return 1;
+       }
+       return 0;
+}
 unsigned long generate_cluster(kdev_t, int b[], int);
 unsigned long generate_cluster_swab32(kdev_t, int b[], int);
 extern kdev_t ROOT_DEV;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to