[sheepdog] [PATCH 3/3] collie: don't use uint64_t for atomic operations

YunQiang Su wzssyqa at gmail.com
Mon Aug 5 06:59:00 CEST 2013


On Fri, Aug 2, 2013 at 5:00 PM, MORITA Kazutaka
<morita.kazutaka at lab.ntt.co.jp> wrote:
> At Fri, 2 Aug 2013 16:34:00 +0800,
> Liu Yuan wrote:
>>
>> On Fri, Aug 02, 2013 at 04:14:41PM +0900, MORITA Kazutaka wrote:
>> > From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
>> >
>> > Atomic operations against 64 bit integers are not allowed on 32 bit
>> > architectures.  Using unsigned long instead of uint64_t fixes the
>> > problem and doesn't hurt x86_64.
>> >
>> > Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
>> > ---
>> >  collie/farm/farm.c |    4 ++--
>> >  1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/collie/farm/farm.c b/collie/farm/farm.c
>> > index 2a4e307..4b43f3d 100644
>> > --- a/collie/farm/farm.c
>> > +++ b/collie/farm/farm.c
>> > @@ -255,7 +255,7 @@ static void save_object_done(struct work *work)
>> >  {
>> >     struct snapshot_work *sw = container_of(work, struct snapshot_work,
>> >                                             work);
>> > -   static uint64_t saved;
>> > +   static unsigned long saved;
>> >
>> >     if (uatomic_is_true(&work_error))
>> >             goto out;
>> > @@ -329,7 +329,7 @@ static void do_load_object(struct work *work)
>> >     void *buffer = NULL;
>> >     size_t size;
>> >     struct snapshot_work *sw;
>> > -   static uint64_t loaded;
>> > +   static unsigned long loaded;
>> >
>> >     if (uatomic_is_true(&work_error))
>> >             return;
>>
>> So this means for 32 bit machine, we can only support up to 4G objects, that is
>> 16P storage in total?
>
> I think so, but isn't it enough for 32 bit machines?  I think most
> users use 64 bit machines to create large storage system.
>
>> Do you know why uatomic can't operate on u64?
>
> Sorry, I don't know.
>
> If we really want to use a 64 bit integer for atomic operations, we
> should use pthread_mutex_lock instead of urcu macros.  IMHO, it looks
> overkill here.
In C11, there is a new _Atomic. Is it suit for us here?
>
> Thanks,
>
> Kazutaka
> --
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog



-- 
YunQiang Su



More information about the sheepdog mailing list