threads / patch / 24383

patchUse dev_t for device id (st_dev) from stat in setup_git_directory_gently()

Subject: [PATCH] Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

## tl;dr

6 messages between Jul 13, 2010 and Jul 14, 2010. Diffs are folded; open one to read it.

replies: 5people: 3as markdown or json

Raja R Harinath· Jul 13, 2010, 09:02 UTC · lore

The original declaration was int, which seems to cause trouble on my machine. It causes spurious "filesystem boundary" errors when running the testsuite. The cause seems to be

  $ stat -c%d .
  2147549952
which is too large for a 32-bit int type.

Using the correct type, dev_t, solves the issue. (Because I'm paranoid and forgetful, I checked -- yes, Unix v7 had dev_t.)

Other uses of st_dev seem to be reasonably safe.   fill_stat_cache_info
truncates it to an 'unsigned int', but that value seems to be used only
to validate the cache, and only if USE_STDEV is defined.
---
 setup.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Show changes to setup.c +2 −1
diff --git a/setup.c b/setup.c
index 7e04602..87c21f0 100644
--- a/setup.c
+++ b/setup.c
@@ -323,7 +323,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
 	const char *gitdirenv;
 	const char *gitfile_dir;
 	int len, offset, ceil_offset, root_len;
-	int current_device = 0, one_filesystem = 1;
+	dev_t current_device = 0;
+	int one_filesystem = 1;
 	struct stat buf;
 
 	/*
-- 
1.7.2.rc2.11.g03e33
Ævar Arnfjörð Bjarmason· Jul 13, 2010, 09:26 UTC · re: Raja R Harinath · lore

Re: [PATCH] Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

On Tue, Jul 13, 2010 at 09:02, Raja R Harinath <harinath@hurrynot.org> wrote:
> The original declaration was int, which seems to cause trouble on my
> machine.
What OS/architecture is your machine running?
Raja R Harinath· Jul 13, 2010, 12:01 UTC · re: Ævar Arnfjörð Bjarmason · lore

Re: [PATCH] Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

Hi,
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 5 quoted lines
> On Tue, Jul 13, 2010 at 09:02, Raja R Harinath <harinath@hurrynot.org> wrote:
>> The original declaration was int, which seems to cause trouble on my
>> machine.
>
> What OS/architecture is your machine running?
Nothing fancy
  $ uname -a
  Linux hariville.hurrynot.org 2.6.35-rc3-00397-g123f94f #146 SMP PREEMPT Mon Jul 5 15:50:47 IST 2010 x86_64 GNU/Linux
  $ df .
  Filesystem           1K-blocks      Used Available Use% Mounted on
  /dev/sda1            959314384 389150456 521433560  43% /
- Hari
Junio C Hamano· Jul 13, 2010, 20:55 UTC · re: Raja R Harinath · lore

Re: [PATCH] Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

Raja R Harinath <harinath@hurrynot.org> writes:
Show 16 quoted lines
> The original declaration was int, which seems to cause trouble on my
> machine.  It causes spurious "filesystem boundary" errors when running
> the testsuite.  The cause seems to be
>
>   $ stat -c%d .
>   2147549952
>
> which is too large for a 32-bit int type.
>
> Using the correct type, dev_t, solves the issue.  (Because I'm
> paranoid and forgetful, I checked -- yes, Unix v7 had dev_t.)
>
> Other uses of st_dev seem to be reasonably safe.   fill_stat_cache_info
> truncates it to an 'unsigned int', but that value seems to be used only
> to validate the cache, and only if USE_STDEV is defined.
> ---
Makes sense; thanks.
Sign-off?
Show 19 quoted lines
>  setup.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/setup.c b/setup.c
> index 7e04602..87c21f0 100644
> --- a/setup.c
> +++ b/setup.c
> @@ -323,7 +323,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
>  	const char *gitdirenv;
>  	const char *gitfile_dir;
>  	int len, offset, ceil_offset, root_len;
> -	int current_device = 0, one_filesystem = 1;
> +	dev_t current_device = 0;
> +	int one_filesystem = 1;
>  	struct stat buf;
>  
>  	/*
> -- 
> 1.7.2.rc2.11.g03e33
Raja R Harinath· Jul 14, 2010, 01:08 UTC · re: Junio C Hamano · lore

Re: [PATCH] Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

Hi,
Junio C Hamano <gitster@pobox.com> writes:
Show 22 quoted lines
> Raja R Harinath <harinath@hurrynot.org> writes:
>
>> The original declaration was int, which seems to cause trouble on my
>> machine.  It causes spurious "filesystem boundary" errors when running
>> the testsuite.  The cause seems to be
>>
>>   $ stat -c%d .
>>   2147549952
>>
>> which is too large for a 32-bit int type.
>>
>> Using the correct type, dev_t, solves the issue.  (Because I'm
>> paranoid and forgetful, I checked -- yes, Unix v7 had dev_t.)
>>
>> Other uses of st_dev seem to be reasonably safe.   fill_stat_cache_info
>> truncates it to an 'unsigned int', but that value seems to be used only
>> to validate the cache, and only if USE_STDEV is defined.
>> ---
>
> Makes sense; thanks.
>
> Sign-off?
Signed-off-by: Raja R Harinath <harinath@hurrynot.org>
Do I need to resend?
Show 19 quoted lines
>>  setup.c |    3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/setup.c b/setup.c
>> index 7e04602..87c21f0 100644
>> --- a/setup.c
>> +++ b/setup.c
>> @@ -323,7 +323,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
>>  	const char *gitdirenv;
>>  	const char *gitfile_dir;
>>  	int len, offset, ceil_offset, root_len;
>> -	int current_device = 0, one_filesystem = 1;
>> +	dev_t current_device = 0;
>> +	int one_filesystem = 1;
>>  	struct stat buf;
>>  
>>  	/*
>> -- 
>> 1.7.2.rc2.11.g03e33
Junio C Hamano· Jul 14, 2010, 14:55 UTC · re: Raja R Harinath · lore

Re: [PATCH] Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

Raja R Harinath <harinath@hurrynot.org> writes:
Show 30 quoted lines
> Hi,
>
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Raja R Harinath <harinath@hurrynot.org> writes:
>>
>>> The original declaration was int, which seems to cause trouble on my
>>> machine.  It causes spurious "filesystem boundary" errors when running
>>> the testsuite.  The cause seems to be
>>>
>>>   $ stat -c%d .
>>>   2147549952
>>>
>>> which is too large for a 32-bit int type.
>>>
>>> Using the correct type, dev_t, solves the issue.  (Because I'm
>>> paranoid and forgetful, I checked -- yes, Unix v7 had dev_t.)
>>>
>>> Other uses of st_dev seem to be reasonably safe.   fill_stat_cache_info
>>> truncates it to an 'unsigned int', but that value seems to be used only
>>> to validate the cache, and only if USE_STDEV is defined.
>>> ---
>>
>> Makes sense; thanks.
>>
>> Sign-off?
>
> Signed-off-by: Raja R Harinath <harinath@hurrynot.org>
>
> Do I need to resend?
No.  Again thanks for a fix.
Show 24 quoted lines
>>>  setup.c |    3 ++-
>>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/setup.c b/setup.c
>>> index 7e04602..87c21f0 100644
>>> --- a/setup.c
>>> +++ b/setup.c
>>> @@ -323,7 +323,8 @@ const char *setup_git_directory_gently(int *nongit_ok)
>>>  	const char *gitdirenv;
>>>  	const char *gitfile_dir;
>>>  	int len, offset, ceil_offset, root_len;
>>> -	int current_device = 0, one_filesystem = 1;
>>> +	dev_t current_device = 0;
>>> +	int one_filesystem = 1;
>>>  	struct stat buf;
>>>  
>>>  	/*
>>> -- 
>>> 1.7.2.rc2.11.g03e33
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

← back to recent threads