Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.4.14-pre8 /fs/block_dev.c

Filename:/fs/block_dev.c
Lines Added:10
Lines Deleted:2
Also changed in: (Previous) 2.4.14-pre7  2.4.14-pre6  2.4.14-pre5  2.4.14-pre4  2.4.14-pre3  2.4.14-pre2 
(Following) 2.4.14  2.4.15-pre9  2.4.15-greased-turkey  2.4.17-pre6  2.4.17-pre7  2.4.17-pre8 

Location
[  2.4.14-pre8
  [  fs
     o  block_dev.c

Patch

diff -u --recursive --new-file v2.4.13/linux/fs/block_dev.c linux/fs/block_dev.c
--- v2.4.13/linux/fs/block_dev.c   Tue Oct 23 22:48:53 2001
+++ linux/fs/block_dev.c   Thu Oct 25 13:58:35 2001
@@ -537,14 +537,20 @@
       bdev->bd_op = get_blkfops(MAJOR(dev));
    if (bdev->bd_op) {
       ret = 0;
+      if (bdev->bd_op->owner)
+         __MOD_INC_USE_COUNT(bdev->bd_op->owner);
       if (bdev->bd_op->open)
          ret = bdev->bd_op->open(inode, file);
       if (!ret) {
          bdev->bd_openers++;
          bdev->bd_inode->i_size = blkdev_size(dev);
          bdev->bd_inode->i_blkbits = blksize_bits(block_size(dev));
-      } else if (!bdev->bd_openers)
-         bdev->bd_op = NULL;
+      } else {
+         if (bdev->bd_op->owner)
+            __MOD_DEC_USE_COUNT(bdev->bd_op->owner);
+         if (!bdev->bd_openers)
+            bdev->bd_op = NULL;
+      }
    }
    unlock_kernel();
    up(&bdev->bd_sem);
@@ -605,6 +611,8 @@
       kill_bdev(bdev);
    if (bdev->bd_op->release)
       ret = bdev->bd_op->release(bd_inode, NULL);
+   if (bdev->bd_op->owner)
+      __MOD_DEC_USE_COUNT(bdev->bd_op->owner);
    if (!bdev->bd_openers)
       bdev->bd_op = NULL;
    unlock_kernel();


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.