From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from aserp1040.oracle.com ([141.146.126.69]:19380 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751968AbaE3HuR (ORCPT ); Fri, 30 May 2014 03:50:17 -0400 Message-ID: <538838E8.1050900@oracle.com> Date: Fri, 30 May 2014 15:53:12 +0800 From: Anand Jain MIME-Version: 1.0 To: Qu Wenruo , linux-btrfs@vger.kernel.org CC: Karel Zak Subject: Re: [PATCH RFC] btrfs: Add ctime/mtime update for btrfs device add/remove. References: <1397638952-16691-1-git-send-email-quwenruo@cn.fujitsu.com> <53883883.8020608@oracle.com> In-Reply-To: <53883883.8020608@oracle.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Sender: linux-btrfs-owner@vger.kernel.org List-ID: I have sent this [PATCH] btrfs: kobject_uevent should use bd_part instead of bd_disk which should fix. Could you try and update. Thanks, Anand On 30/05/14 15:51, Anand Jain wrote: > > > > > Hi Qu, > > In line below... > > On 16/04/14 17:02, Qu Wenruo wrote: >> Btrfs will send uevent to udev inform the device change, >> but ctime/mtime for the block device inode is not udpated, which cause >> libblkid used by btrfs-progs unable to detect device change and use old >> cache, causing 'btrfs dev scan; btrfs dev rmove; btrfs dev scan' give an >> error message. >> >> Reported-by: Tsutomu Itoh >> Cc: Karel Zak >> Signed-off-by: Qu Wenruo >> --- >> fs/btrfs/volumes.c | 26 ++++++++++++++++++++++++-- >> 1 file changed, 24 insertions(+), 2 deletions(-) >> >> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c >> index 49d7fab..ce232d7 100644 >> --- a/fs/btrfs/volumes.c >> +++ b/fs/btrfs/volumes.c >> @@ -1452,6 +1452,22 @@ out: >> return ret; >> } >> >> +/* >> + * Function to update ctime/mtime for a given device path. >> + * Mainly used for ctime/mtime based probe like libblkid. >> + */ >> +static void update_dev_time(char *path_name) >> +{ >> + struct file *filp; >> + >> + filp = filp_open(path_name, O_RDWR, 0); >> + if (!filp) >> + return; >> + file_update_time(filp); >> + filp_close(filp, NULL); >> + return; >> +} >> + > > IMO /(I might be wrong) I think its not a good idea to explicitly > achieve this. Since this thread would have already scratched the > device's SB, shouldn't that take care of updating the mtime ? > > Thanks, Anand > > >> static int btrfs_rm_dev_item(struct btrfs_root *root, >> struct btrfs_device *device) >> { >> @@ -1704,10 +1720,14 @@ int btrfs_rm_device(struct btrfs_root *root, >> char *device_path) >> >> ret = 0; >> >> - /* Notify udev that device has changed */ >> - if (bdev) >> + if (bdev) { >> + /* Notify udev that device has changed */ >> btrfs_kobject_uevent(bdev, KOBJ_CHANGE); >> >> + /* Update ctime/mtime for device path for libblkid */ >> + update_dev_time(device_path); >> + } >> + > > > >> error_brelse: >> brelse(bh); >> if (bdev) >> @@ -2146,6 +2166,8 @@ int btrfs_init_new_device(struct btrfs_root >> *root, char *device_path) >> ret = btrfs_commit_transaction(trans, root); >> } >> >> + /* Update ctime/mtime for libblkid */ >> + update_dev_time(device_path); >> return ret; >> >> error_trans: >> > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html