Re: What to do about subvolumes?

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

 



On Wed, Dec 01, 2010 at 02:54:33PM -0500, Josef Bacik wrote:
> Oh well crud, I was hoping that I could leave the inode numbers as 256 for
> everything, but I forgot about readdir.  So the inode item in the parent would
> have to have a unique inode number that would get spit out in readdir, but then
> if we stat'ed the directory we'd get 256 for the inode number.  Oh well,
> incompat flag it is then.

I think you're already fine:

	# mkdir TMP
	# dd if=/dev/zero of=TMP-image bs=1M count=512
	# mkfs.btrfs TMP-image
	# mount -oloop TMP-image TMP/
	# btrfs subvolume create sub-a
	# btrfs subvolume create sub-b
	../readdir-inos .
	. 256 256
	.. 256 4130609
	sub-a 256 256
	sub-b 257 256

Where readdir-inos is my silly test program below, and the first number is from
readdir, the second from stat.

?

--b.

#include <stdio.h>
#include <err.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>

/* demonstrate that for mountpoints, readdir ino of mounted-on
 * directory, stat returns ino of mounted directory. */

int main(int argc, char *argv[])
{
	struct dirent *de;
	int ret;
	DIR *d;

	if (argc != 2)
		errx(1, "usage: %s <directory>", argv[0]);
	ret = chdir(argv[1]);
	if (ret)
		errx(1, "chdir /");
	d = opendir(".");
	if (!d)
		errx(1, "opendir .");
	while (de = readdir(d)) {
		struct stat st;

		ret = stat(de->d_name, &st);
		if (ret)
			errx(1, "stat %s", de->d_name);
		printf("%s %d %d\n", de->d_name, de->d_ino, st.st_ino);
	}
}

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


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux