[lustre-devel] [lustre-discuss] more on lustre striping
John Bauer
bauerj at iodoctors.com
Sat May 21 13:01:22 PDT 2016
Andreas,
Thanks for the reply. For what it's worth, extending a file that does
not have layout set does work.
% *rm -f file.dat*
% *./no_stripe.exe file.dat*
fd=3
% *lfs getstripe file.dat*
file.dat has no stripe info
% *date >> file.dat*
% *lfs getstripe file.dat*
file.dat
lmm_stripe_count: 1
lmm_stripe_size: 1048576
lmm_pattern: 1
lmm_layout_gen: 0
lmm_stripe_offset: 21
obdidx objid objid group
21 6143298 0x5dbd42 0
%
The LD_PRELOAD is exactly what I am doing in my I/O library.
Unfortunately, one can not intercept the open() that results from a call
to fopen(). That open is hard linked to the open in libc and not
satisfied by the runtime linker. This is what is driving this topic for
me. I can not conveniently set the striping for a file opened with
fopen() and other functions where the open is called from inside libc. I
used to believe that not too many application use stdio for heavy I/O,
but I have been come across several recently.
John
On 5/21/2016 12:51 AM, Dilger, Andreas wrote:
> This is probably getting to be more of a topic for lustre-devel.
>
> There currently isn't any way to do what you ask, since (IIRC) it will
> cause an error for apps that try to write to the files before the
> layout is set.
>
> What you could do is to create an LD_PRELOAD library to intercept the
> open() calls and set O_LOV_DELAY_CREATE and set the layout explicitly
> for each file. This might be a win if each file needs a different
> layout, but since it uses two RPCs per file it would be slower than
> using the default layout.
>
> Cheers, Andreas
>
> On May 18, 2016, at 16:46, John Bauer <bauerj at iodoctors.com
> <mailto:bauerj at iodoctors.com>> wrote:
>
>> Since today's topic seems to be Lustre striping, I will revisit a
>> previous line of questions I had.
>>
>> Andreas had put me on to O_LOV_DELAY_CREATE which I have been
>> experimenting with. My question is : Is there a way to flag a
>> directory with O_LOV_DELAY_CREATE so that a file created in that
>> directory will be created with O_LOV_DELAY_CREATE also. Much like a
>> file can inherit a directory's stripe count and stripe size, it would
>> be convenient if a file could also inherit O_LOV_DELAY_CREATE? That
>> way, for open()s that I can not intercept ( and thus can not set
>> O_LOV_DELAY_CREATE in oflags) , such as those issued by fopen(), I
>> can then get the fd with fileno() and set the striping withioctl(fd,
>> LL_IOC_LOV_SETSTRIPE, lum).
>>
>> Thanks
>>
>> John
>>
>> --
>> I/O Doctors, LLC
>> 507-766-0378
>> bauerj at iodoctors.com
>> _______________________________________________
>> lustre-discuss mailing list
>> lustre-discuss at lists.lustre.org <mailto:lustre-discuss at lists.lustre.org>
>> http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org
--
I/O Doctors, LLC
507-766-0378
bauerj at iodoctors.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lustre.org/pipermail/lustre-devel-lustre.org/attachments/20160521/35b3264d/attachment-0001.htm>
More information about the lustre-devel
mailing list