Just for clarity, getdents is exactly the other interface options discussed couple of weeks back (use virtual directories & standard file-system API). Regards, Andrey On Mon, Nov 16, 2009 at 11:58 AM, TARUISI Hiroaki <taruishi.hiroak@xxxxxxxxxxxxxx> wrote: > Thank you for your advice. > > I'm aware of redundant search, but I didn't think of > getdents like interface. > > I'll remake it without redundant search. > > Regards, > taruisi > > Yan, Zheng wrote: >> 2009/11/16 TARUISI Hiroaki <taruishi.hiroak@xxxxxxxxxxxxxx>: >>> I made Snapshot/subvolume listing feature. >>> >>> This feature consists of two patches, for kernel(ioctl), >>> and for progs(btrfsctl). I send these two patches as response >>> of this mail soon. >>> >>> New option '-l' is introduced to btrfsctl for listing. >>> >>> If this option is specified, btrfsctl call new ioctl. New ioctl >>> searches root tree and enumerates subtrees. For each subtrees, >>> ioctl searches directory path to tree root, and enumerates >>> more descendant until no more subtree is found. >>> >>> MANPAGE-like option description and examples are as follows. >>> >>> OPTIONS >>> -l _file_ >>> List all snapshot/subvolume directories under a tree >>> which _file_ belongs to. >>> >>> EXAMPLES >>> # btrfsctl -l /work/btrfs >>> Base path = /work/btrfs/ >>> No. Tree ID Subvolume Relative Path >>> 1 256 ss1/ >>> 2 257 ss2/ >>> 3 258 svs1/ss1/ >>> 4 259 svs1/ss2/ >>> 5 260 svs2/ss1/ >>> 6 261 svs2/ss2/ >>> 7 262 ss3/ >>> 8 263 ss4/ >>> 9 264 sv_pool/ >>> 10 265 sv_pool/ss01/ >>> 11 266 sv_pool/ss02/ >>> 12 267 sv_pool/ss03/ >>> 13 268 sv_pool/ss04/ >>> 14 269 sv_pool/ss05/ >>> 15 270 sv_pool/ss06/ >>> 16 271 sv_pool/ss07/ >>> 17 272 sv_pool/ss08/ >>> 18 273 sv_pool/ss09/ >>> 19 274 sv_pool/ss10/ >>> operation complete >>> Btrfs v0.19-9-gd67dad2 >>> >> >> Thank you for doing this. >> >> I have a quick look at the patches. It seems the ioctl returns full path >> to each subvolume and uses sequence ID to indicate the progress >> of listing. Every time the ioctl is called, it tries building full list of >> subvolume, then skip entries that already returned. I think the API is >> suboptimal, a getdents like API is better. (The ioctl only lists subvolumes >> within a given subvolume, the user program call the ioctl recursively >> to list all subvolumes.) >> >> Yan, Zheng >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
