Re: [PATCH v5 2/2] nilfs2: use atomic_long_t type for inodes_count and blocks_count fields in nilfs_root struct

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

 



Hi Ryusuke,

On May 25, 2013, at 7:33 AM, Ryusuke Konishi wrote:

> On Fri, 24 May 2013 17:37:12 -0400, Jörn Engel wrote:
>> On Sat, 25 May 2013 02:01:04 +0400, Vyacheslav Dubeyko wrote:
>>> On May 24, 2013, at 11:01 PM, Jörn Engel wrote:
>>>> On Fri, 24 May 2013 23:30:10 +0400, Vyacheslav Dubeyko wrote:
>>>>> On May 24, 2013, at 9:54 PM, Jörn Engel wrote:
>>>>>> On Fri, 24 May 2013 17:32:52 +0400, Vyacheslav Dubeyko wrote:
>>>>>>> 
>>>>>>> Subject: [PATCH v5 2/2] nilfs2: use atomic_long_t type for inodes_count
>>>>>> ...
>>>>>>> The cp_inodes_count and cp_blocks_count are represented as
>>>>>>> __le64 type in on-disk structure (struct nilfs_checkpoint).
>>>>>> 
>>>>>> Isn't atomic_long_t defined to be 32bit on 32bit architectures?
>>>>> 
>>>>> As I understand, yes.
>>>> 
>>>> And it doesn't concern you to use a 32bit memory structure to
>>>> represent a 64bit on-disk structure? ;)
>>> 
>>> I suppose that you mean possibility to mount NILFS2 volume under 32 bit architecture
>>> after working with this volume under 64 bit architecture. Am I correct?
>>> 
>>> Have you any concrete remarks about code of the patch? Feel free to offer your vision.
>> 
>> Replace atomic_long_t with atomic64_t and replace the various accessor
>> functions.  The on-disk data structure is 64bit, so of course you use
>> a 64bit in-memory structure.
>> 
>> Does it really take a vision to come up with this idea?
> 
> Things are not so simple.  It is not guaranteed that 32-bit
> architectures can handle 64-bit on-disk values.  (Think ino_t, page
> index, or nrpages.  These are defined with "unsigned long".)
> 
> However, these "inodes_count" and "blocks_count" are directly
> corresponding to their on-disk counterparts, so using atomic64_t looks
> more intuitive for most people; using atomic_long_t for these was
> confusing.
> 
> Ok, I agree.
> 
> Vyacheslav, could you please consider taking in Jörn's comment ?
> 

So, I have such understanding. Please, correct me if I'm wrong.

The atomic_long_t and atomic64_t types are 64 bits on 64-bit architecture.
The atomic_long_t type is 32 bits on 32-bit architecture. So, If we want to have
64 bits atomic counter on 32-bit architecture then we need to use generic atomic64_t
implementation (asm-generic/atomic64.t). But generic 64-bit atomic support
depends from CONFIG_GENERIC_ATOMIC64 configuration option
(http://lxr.free-electrons.com/source/include/linux/atomic.h#L127). As a result,
NILFS2 driver needs to have dependance from CONFIG_GENERIC_ATOMIC64
configuration option on 32-bit architecture configuration.

With the best regards,
Vyacheslav Dubeyko.

> 
> With regards,
> Ryusuke Konishi

--
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