On 2007.06.15 15:46:32 +0200, Johannes Weiner wrote: > Hi, > > Andrew, I promised it [1], here goes. Patched against Linus' git-tree. > > [1] http://lkml.org/lkml/2007/3/22/226 > > This patch replaces some obscure code-paths in fs/block_dev.c with more > readable versions. > > Signed-off-by: Johannes Weiner <[EMAIL PROTECTED]> >
> diff --git a/fs/block_dev.c b/fs/block_dev.c > index ea1480a..1ffbb6d 100644 > --- a/fs/block_dev.c > +++ b/fs/block_dev.c > @@ -660,26 +660,16 @@ void bd_forget(struct inode *inode) > > int bd_claim(struct block_device *bdev, void *holder) > { > - int res; > + int res = 0; > spin_lock(&bdev_lock); > > - /* first decide result */ > - if (bdev->bd_holder == holder) > - res = 0; /* already a holder */ > - else if (bdev->bd_holder != NULL) > - res = -EBUSY; /* held by someone else */ > - else if (bdev->bd_contains == bdev) > - res = 0; /* is a whole device which isn't held */ > - > - else if (bdev->bd_contains->bd_holder == bd_claim) > - res = 0; /* is a partition of a device that is being > partitioned */ > - else if (bdev->bd_contains->bd_holder != NULL) > - res = -EBUSY; /* is a partition of a held device */ > - else > - res = 0; /* is a partition of an un-held device */ > + /* If already held by someone else or we have a > + * partition of a held device, we do nothing. */ > > - /* now impose change */ > - if (res==0) { > + if (bdev->bd_holder || bdev->bd_contains->bd_holder) > + res = -EBUSY; Hm, that actually ignores the "someone else" part of the comment and introduces a semantic change. No idea, if it breaks anything though. Björn - 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/