Re: libblkid: Idea to force given cached entry to be invalidated?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




-------- Original Message --------
Subject: Re: libblkid: Idea to force given cached entry to be invalidated?
From: Karel Zak <kzak@xxxxxxxxxx>
To: Qu Wenruo <quwenruo@xxxxxxxxxxxxxx>
Date: 2014年04月16日 17:03
On Wed, Apr 16, 2014 at 08:53:27AM +0800, Qu Wenruo wrote:
So the problem is not that btrfs is fast enough ;-)
According to your explaination, it seems that if there is any modification
to the block device, libblkid will rescan it and not
to use the old cache, do I understand it right?
Yes, blkid_verify():

	if (now >= dev->bid_time &&
#ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
	    (st.st_mtime < dev->bid_time ||
	        (st.st_mtime == dev->bid_time &&
		 st.st_mtim.tv_nsec / 1000 <= dev->bid_utime)) &&
#else
	    st.st_mtime <= dev->bid_time &&
#endif
	    (diff < BLKID_PROBE_MIN ||
		(dev->bid_flags & BLKID_BID_FL_VERIFIED &&
		 diff < BLKID_PROBE_INTERVAL)))
		return dev;


It checks two basic things:

  a) compare device st_mtime with cache entry time (bid_time and bid_utime),
     the valid cache entry has not to be older than device mtime.

  b) valid cache entry has not to be older than BLKID_PROBE_MIN (2 sec)
     and previous blkid_verify() validation remaining in memory has not
     to be older than BLKID_PROBE_INTERVAL (200s).

BTW, it would be nice to have --verbose option for btrfs-scan, now it
seems like black box.
I'd like to add it, but as you know, 'btrfs dev scan' just calls a btrfs
ioctl, so even '--verbose' is added,
nothing useful will be printed out. :(
Well, I mean at least info about for what devices it calls the ioctls.

     Karel

Thanks for all your explaination.
Now I think I am somewhat clear of the libblkid cache now.

But after some tests, it seems that the ctime/mtime based cache seems not perfect due to the fact that multiple
device file can be created in different fs with same major/minor number.
especially each of them has individual ctime/mtime timestamp.

So if someone (maybe insane) use mknod to create as block device file and use 'btrfs dev del' on the newly created block device file, libblkid will still be unable to detect the change since the ctime/mtime of block device file in /dev/
does not change.

Will libblkid be able to deal with it in later versions? (Although not related to my original problem now)

Thanks,
Qu
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux