[stgt] [PATCH 2/2] tgt-admin: check if device is mounted on /

Tomasz Chmielewski mangoo at wpkg.org
Fri Sep 12 10:48:20 CEST 2008


Doron Shoham schrieb:
> Bastian Blank wrote:
>> On Thu, Sep 04, 2008 at 04:39:24PM +0300, Doron Shoham wrote:
>>> deny allocation of a device which
>>> which mounted on the same device as rootfs.
>>> also deny the allocation of swap devices.
>>> add --allow-mounted flag for overriding this.
>> Neither /etc/mtab nor /dev/mounts provides a proper view on the mounted
>> filesystems. To check the used state you need to try to open it
>> exclusive.
>>
>> Bastian
>>
> 
> Can you please explain how to do it?
> What do you mean by "try to open it exclusive"?

This is what I found out.

DRBD[1] uses kernel's bd_claim to see if the device is already claimed.

bd_claim is located in kernel's fs/block_dev.c:

int bd_claim(struct block_device *bdev, void *holder)
{
        int res;
        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 */


How to use it from user-space? Any kernel hackers out there? ;)


[1] http://www.drbd.org



-- 
Tomasz Chmielewski
http://wpkg.org
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list