diff mbox

Skip "rootfs" entry when checking for ext4 filesystem.

Message ID 4AA682BE.2030200@redhat.com
State Accepted, archived
Headers show

Commit Message

Eric Sandeen Sept. 8, 2009, 4:13 p.m. UTC
Skip "rootfs" entry when checking for ext4 filesystem.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---


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

Comments

Eric Sandeen Oct. 8, 2009, 8:14 p.m. UTC | #1
Ping on this one?

Ravi reported a failure w/o it:

> Hi,
> 
> I'm playing with e4defrag from e2frprogs git, and I've run into a bug.
> When I try to defragment files on my root filesystem, it refuses to
> acknowledge that the filesystem is ext4. I believe the problem is that
> it checks the filesystem type by parsing /etc/mtab, but the root
> filesystem shows up there like this:
> 
> rootfs on / type rootfs (rw)
> /dev/root on / type ext4 (rw,noatime,barrier=1,data=ordered)
> 
> so it gets confused by the bogus first entry. It works just fine on
> other ext4 filesystems I have.
> 
> (If this is the wrong mailing list, I apologize; I couldn't find one for
> e2fsprogs, so I thought this was the next best thing.)
> 
> --Ravi

Thanks,
-Eric

Eric Sandeen wrote:
> Skip "rootfs" entry when checking for ext4 filesystem.
> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> ---
> 
> diff --git a/misc/e4defrag.c b/misc/e4defrag.c
> index 82e3868..0d04df9 100644
> --- a/misc/e4defrag.c
> +++ b/misc/e4defrag.c
> @@ -430,6 +430,8 @@ static int is_ext4(const char *file)
>  	}
>  
>  	while ((mnt = getmntent(fp)) != NULL) {
> +		if (mnt->mnt_fsname[0] != '/')
> +			continue;
>  		len = strlen(mnt->mnt_dir);
>  		ret = memcmp(file_path, mnt->mnt_dir, len);
>  		if (ret != 0)
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Sandeen Oct. 7, 2010, 5:04 p.m. UTC | #2
On 10/08/2009 03:14 PM, Eric Sandeen wrote:
> Ping on this one?

Ping++

-Eric

> Ravi reported a failure w/o it:
> 
>> Hi,
>>
>> I'm playing with e4defrag from e2frprogs git, and I've run into a bug.
>> When I try to defragment files on my root filesystem, it refuses to
>> acknowledge that the filesystem is ext4. I believe the problem is that
>> it checks the filesystem type by parsing /etc/mtab, but the root
>> filesystem shows up there like this:
>>
>> rootfs on / type rootfs (rw)
>> /dev/root on / type ext4 (rw,noatime,barrier=1,data=ordered)
>>
>> so it gets confused by the bogus first entry. It works just fine on
>> other ext4 filesystems I have.
>>
>> (If this is the wrong mailing list, I apologize; I couldn't find one for
>> e2fsprogs, so I thought this was the next best thing.)
>>
>> --Ravi
> 
> Thanks,
> -Eric
> 
> Eric Sandeen wrote:
>> Skip "rootfs" entry when checking for ext4 filesystem.
>>
>> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
>> ---
>>
>> diff --git a/misc/e4defrag.c b/misc/e4defrag.c
>> index 82e3868..0d04df9 100644
>> --- a/misc/e4defrag.c
>> +++ b/misc/e4defrag.c
>> @@ -430,6 +430,8 @@ static int is_ext4(const char *file)
>>  	}
>>  
>>  	while ((mnt = getmntent(fp)) != NULL) {
>> +		if (mnt->mnt_fsname[0] != '/')
>> +			continue;
>>  		len = strlen(mnt->mnt_dir);
>>  		ret = memcmp(file_path, mnt->mnt_dir, len);
>>  		if (ret != 0)
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andreas Dilger Oct. 11, 2010, 8:59 p.m. UTC | #3
On 2010-10-07, at 11:04, Eric Sandeen wrote:

> On 10/08/2009 03:14 PM, Eric Sandeen wrote:
>> Ping on this one?
> 
> Ping++

Looks reasonable.  I thought it would skip the second "/" entry as well, but in fact this is looking at the "dev" field and it is skipping the "rootfs" (as well as other virtual filesystems like procfs and devfs).

>> Ravi reported a failure w/o it:
>> 
>>> Hi,
>>> 
>>> I'm playing with e4defrag from e2frprogs git, and I've run into a bug.
>>> When I try to defragment files on my root filesystem, it refuses to
>>> acknowledge that the filesystem is ext4. I believe the problem is that
>>> it checks the filesystem type by parsing /etc/mtab, but the root
>>> filesystem shows up there like this:
>>> 
>>> rootfs on / type rootfs (rw)
>>> /dev/root on / type ext4 (rw,noatime,barrier=1,data=ordered)
>>> 
>>> so it gets confused by the bogus first entry. It works just fine on
>>> other ext4 filesystems I have.
>>> 
>>> (If this is the wrong mailing list, I apologize; I couldn't find one for
>>> e2fsprogs, so I thought this was the next best thing.)
>>> 
>>> --Ravi
>> 
>> Thanks,
>> -Eric
>> 
>> Eric Sandeen wrote:
>>> Skip "rootfs" entry when checking for ext4 filesystem.
>>> 
>>> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
>>> ---
>>> 
>>> diff --git a/misc/e4defrag.c b/misc/e4defrag.c
>>> index 82e3868..0d04df9 100644
>>> --- a/misc/e4defrag.c
>>> +++ b/misc/e4defrag.c
>>> @@ -430,6 +430,8 @@ static int is_ext4(const char *file)
>>> 	}
>>> 
>>> 	while ((mnt = getmntent(fp)) != NULL) {
>>> +		if (mnt->mnt_fsname[0] != '/')
>>> +			continue;
>>> 		len = strlen(mnt->mnt_dir);
>>> 		ret = memcmp(file_path, mnt->mnt_dir, len);
>>> 		if (ret != 0)
>>> 
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

Patch

diff --git a/misc/e4defrag.c b/misc/e4defrag.c
index 82e3868..0d04df9 100644
--- a/misc/e4defrag.c
+++ b/misc/e4defrag.c
@@ -430,6 +430,8 @@  static int is_ext4(const char *file)
 	}
 
 	while ((mnt = getmntent(fp)) != NULL) {
+		if (mnt->mnt_fsname[0] != '/')
+			continue;
 		len = strlen(mnt->mnt_dir);
 		ret = memcmp(file_path, mnt->mnt_dir, len);
 		if (ret != 0)