[Gluster-devel] best practice to ensure data integrity at a concurrent
Raghavendra G
raghavendra at gluster.com
Wed Feb 17 17:47:07 UTC 2010
Hi Dongmin,
please find the inlined comments.
On Wed, Feb 17, 2010 at 4:05 PM, Dongmin Yu <min at hostway.co.kr> wrote:
> Hello,
>
>
>
> I’m trying to store additional metadata like content-type and etc at
> extended attribute.
>
>
>
> My client code are like
>
>
>
> fd = glusterfs_open( path );
>
> glusterfs_write( fd, data, data_length );
>
> glusterfs_close( fd ); //------
>
> glusterfs_setxattr( path, attr_name, attr_value, value_length,0 );
>
>
>
> My concern is that above client code runs on multiple machines and
> multi-threaded.
>
> In higher concurrency, client A could write content, client B write
> content, client B write its attribute then client A write its attribute.
>
> So to speak, file content comes from client B but attribute comes from
> client A.
>
>
>
> If I use a lock server, I can guarantee data integrity. But is there a
> simpler way to store extended attributes at an atomic environment?
>
locks should be used to ensure atomicity. There is no other simpler way
which I can think of.
> I see another function, glusterfs_fsetxattr which accepts open
> glusterfs_file descriptor. If I rewrite as following, can I guarantee the
> integrity?
>
>
>
> fd = glusterfs_open( path );
>
> glusterfs_write( fd, data, data_length );
>
> glusterfs_fsetxattr( fd, attr_name, attr_value, value_length,0 );
>
> glusterfs_close( fd );
>
>
No.
One of the solutions I can think of is,
fd = glusterfs_open( path );
glusterfs_fcntl (fd, F_SETLKW, flock); /* flock tries to hold write lock on
whole file */
/* please note usage
of F_SETLKW, If you want to use F_SETLK you have to check for */
/* return value and
proceed with writing only after lock has been acquired */
glusterfs_write( fd, data, data_length );
glusterfs_setxattr( path, attr_name, attr_value, value_length,0 );
glusterfs_fcntl (fd, F_SETLKW, flock); /*flock tries to unlock */
glusterfs_close( fd ); //------
>
>
>
> Thanks
>
>
>
> *DongMin Yu*
>
>
>
> HOSTWAY IDC Corp. / R&D Principal Researcher
>
> TEL. +822 2105 6037
>
> FAX. +822 2105 6019
>
> CELL. +8216 2086 1357
>
> EMAIL: min.yu at hostwaycorp.com
>
> Website: http://www.hostway.com
>
>
>
> *NOTICE: This email and any file transmitted are confidential and/or
> legally privileged and intended only for the person(s) directly addressed.
> If you are not the intended recipient, any use, copying, transmission,
> distribution, or other forms of dissemination is strictly prohibited. If
> you have received this email in error, please notify the sender immediately
> and permanently delete the email and files, if any.*
>
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> http://lists.nongnu.org/mailman/listinfo/gluster-devel
>
>
regards,
--
Raghavendra G
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20100217/6d5c5c3f/attachment-0003.html>
More information about the Gluster-devel
mailing list