Thanks Mohamad!

How can I see if a handle is left open? In my file_close callback I free the 
custom file object I created and I return SUCCEED. This is how my 
H5VL_file_close looks like:


herr_t ret_value = SUCCEED;
H5RBDB_file_t* f;
    
FUNC_ENTER_NOAPI_NOINIT

f = (H5RBDB_file_t*)file;
if ( (H5RBDB_file_close(f, dxpl_id)) != 0)
    HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, NULL, "unable to close file")
        
done:
    FUNC_LEAVE_NOAPI(ret_value)



and within H5RBDB_file_close() I free the file object (H5RDB_file_t*). Is there 
anything else I have to do to close a file handle?


The user application is simply creating and closing a HDF5 file as I showed you 
in the previous email.


Thanks,

Dimos


---
Dimokritos Stamatakis
PhD student,
Brandeis University

> On May 16, 2016, at 12:04 PM, [email protected] wrote:
> 
> Send Hdf-forum mailing list submissions to
>       [email protected]
> 
> To subscribe or unsubscribe via the World Wide Web, visit
>       http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> 
> or, via email, send a message with subject or body 'help' to
>       [email protected]
> 
> You can reach the person managing the list at
>       [email protected]
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Hdf-forum digest..."
> 
> 
> Today's Topics:
> 
>   1. Re: HDF5-1.10.0 and flock() (Elena Pourmal)
>   2. Re: extra file_close callback called after the end of user
>      App by using the VOL plugin (Mohamad Chaarawi)
>   3. Re: HDF5-1.10.0 and flock() (Dana Robinson)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Mon, 16 May 2016 01:00:31 +0000
> From: Elena Pourmal <[email protected]>
> To: HDF Users Discussion List <[email protected]>
> Subject: Re: [Hdf-forum] HDF5-1.10.0 and flock()
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="Windows-1252"
> 
> Hi Tim,
> 
> 
> On May 13, 2016, at 10:55 AM, Timothy Brown <[email protected]> 
> wrote:
> 
>> Hi all,
>> 
>> I was wondering if HDF5 was going to be keep the 1.8.x branch going? Or is 
>> it recommend to move to the 1.10.x?
> 
> Yes, we will keep 1.8 going until we are satisfied with the quality of 
> 1.10.x. Transition from 1.8 to 1.10 should be seamless for our users :-) 
>> 
>> I'm asking as we all know for SWMR you need flock() and that you can not 
>> disable SWMR at compile time (I don't need it in my day to day use).
> 
> Hmm? HDF5 implements file locking in 1.10.x to prevent unauthorized access to 
> an HDF5 file (for example, file is opened for writing (non-SWMR) and another 
> process tries to write to it it). File locking is enabled if flock (or 
> similar) is available on the system. Configure checks if file locking is 
> available, but I think, we failed to check if it is disabled. We will take a 
> look into this situation.
> 
> Thank you for reporting!
> 
> Elena
> 
> 
>> 
>> On one of the clusters I run on we've got a Lustre file-system. However the 
>> admin's have deemed that file locking is too expensive and have disabled it. 
>> Here's the mount information:
>> 
>> mds01ib@o2ib1:mds02ib@o2ib1:/scratch on /lustre/janus_scratch type lustre 
>> (rw,noauto,_netdev)
>> 
>> So when I run a very simple test to create a HDF5 with version 1.10.0 on 
>> this file system it fails:
>> 
>> janus-compile1 ~$ ./test /lustre/janus_scratch/tibr1099/foo.h5
>> HDF5-DIAG: Error detected in HDF5 (1.10.0) thread 0:
>> #000: H5F.c line 491 in H5Fcreate(): unable to create file
>>   major: File accessibilty
>>   minor: Unable to open file
>> #001: H5Fint.c line 1168 in H5F_open(): unable to lock the file or 
>> initialize file structure
>>   major: File accessibilty
>>   minor: Unable to open file
>> #002: H5FD.c line 1821 in H5FD_lock(): driver lock request failed
>>   major: Virtual File Layer
>>   minor: Can't update object
>> #003: H5FDsec2.c line 939 in H5FD_sec2_lock(): unable to flock file, errno = 
>> 38, error message = 'Function not implemented'
>>   major: File accessibilty
>>   minor: Bad file ID accessed
>> Unable to open: /lustre/janus_scratch/tibr1099/foo.h5:           -1
>> 1
>> 
>> When I strace the program I see it's because flock() failed:
>> 
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR) = 3
>> fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> close(3)                                = 0
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR|O_CREAT|O_TRUNC, 0666) 
>> = 3
>> fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> flock(3, LOCK_EX|LOCK_NB)               = -1 ENOSYS (Function not 
>> implemented)
>> close(3)                                = 0
>> 
>> Versus if I trace the program with version 1.8.15:
>> 
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR) = 3
>> fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> close(3)                                = 0
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR|O_CREAT|O_TRUNC, 0666) 
>> = 3
>> fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> brk(0x235a000)                          = 0x235a000
>> mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
>> 0x7f17252b8000
>> 
>> So my long winded example leads to three questions.
>> 1) Do other HPC sites enable flock() on lustre? If so is it only localflock 
>> so as not to have the burden of a cluster wide flock?
>> 2) Is there a path forward for sites that don't enable flock?
>> 3) Is there the opposite of H5Fstart_swmr_write?
>> 
>> Thanks!
>> Tim<test.f90>_______________________________________________
>> Hdf-forum is for HDF software users discussion.
>> [email protected]
>> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
>> Twitter: https://twitter.com/hdf5
> 
> 
> 
> 
> ------------------------------
> 
> Message: 2
> Date: Mon, 16 May 2016 14:42:25 +0000
> From: Mohamad Chaarawi <[email protected]>
> To: HDF Users Discussion List <[email protected]>
> Subject: Re: [Hdf-forum] extra file_close callback called after the
>       end of user App by using the VOL plugin
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="utf-8"
> 
> Hi Dimos,
> 
> I have not seen this behavior before. I?m guessing you have an open file 
> handle that you missed closing, and the file close is getting triggered at 
> exit.
> To be able to look into this, I will need a simple program with your plugin 
> that replicates this.
> 
> Thanks,
> Mohamad
> 
> From: Hdf-forum <[email protected]> on behalf of Dimos 
> Stamatakis <[email protected]>
> Reply-To: hdf-forum <[email protected]>
> Date: Thursday, May 12, 2016 at 11:39 AM
> To: hdf-forum <[email protected]>
> Subject: [Hdf-forum] extra file_close callback called after the end of user 
> App by using the VOL plugin
> 
> Hello,
> 
> I have implemented a custom VOL plugin for HDF5 and I noticed that every time 
> the application exits, the file_close callback is called one more time at the 
> end. The contents of the object passed as a parameter are unspecified and 
> sometimes the same as the previous objects, so it is hard for me to identify 
> this redundant function call.
> 
> For example, having the following user application:
> 
> file_id = H5Fcreate(?myfile.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
> status = H5Fclose(file_id);
> 
> The first API call will call the file_open callback through the VOL plugin.
> The second API call will call the file_close callback through the VOL plugin 
> with parameter the object specifying the file we want to close. This object 
> contains the file name.
> However, I see another call of the file_close callback at the very end with 
> an invalid object (although not NULL) and file name garbage.
> This causes my program to crash, since I am trying to close the underlying 
> file which is invalid! I cannot think of a way to identify if this call is a 
> redundant call and to ignore it.
> 
> Do you have nay idea of how to deal with this redundant callback?
> 
> 
> Thanks,
> 
> Dimos
> 
> ---
> Dimokritos Stamatakis
> PhD student,
> Brandeis University
> 
> ---
> Dimokritos Stamatakis
> PhD student,
> Brandeis University
> 
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: 
> <http://lists.hdfgroup.org/pipermail/hdf-forum_lists.hdfgroup.org/attachments/20160516/0517345d/attachment-0001.html>
> 
> ------------------------------
> 
> Message: 3
> Date: Mon, 16 May 2016 16:03:16 +0000
> From: Dana Robinson <[email protected]>
> To: HDF Users Discussion List <[email protected]>
> Subject: Re: [Hdf-forum] HDF5-1.10.0 and flock()
> Message-ID:
>       
> <cy1pr17mb06132ddbafd039ad226d0bcdb1...@cy1pr17mb0613.namprd17.prod.outlook.com>
>       
> Content-Type: text/plain; charset="us-ascii"
> 
> If a suitable way to lock files cannot be determined at configure time, a 
> no-op function is substituted. This is currently the case on Windows. File 
> locking is just advisory, so this isn't a big deal.
> 
> As for disabling file locking, we talked about this and will try to get a 
> configure-time mechanism for disabling file locking implemented for HDF5 
> 1.10.1.
> 
> Dana Robinson
> Software Engineer
> The HDF Group
> 
> -----Original Message-----
> From: Hdf-forum [mailto:[email protected]] On Behalf Of 
> Elena Pourmal
> Sent: Sunday, May 15, 2016 9:01 PM
> To: HDF Users Discussion List <[email protected]>
> Subject: Re: [Hdf-forum] HDF5-1.10.0 and flock()
> 
> Hi Tim,
> 
> 
> On May 13, 2016, at 10:55 AM, Timothy Brown <[email protected]> 
> wrote:
> 
>> Hi all,
>> 
>> I was wondering if HDF5 was going to be keep the 1.8.x branch going? Or is 
>> it recommend to move to the 1.10.x?
> 
> Yes, we will keep 1.8 going until we are satisfied with the quality of 
> 1.10.x. Transition from 1.8 to 1.10 should be seamless for our users :-) 
>> 
>> I'm asking as we all know for SWMR you need flock() and that you can not 
>> disable SWMR at compile time (I don't need it in my day to day use).
> 
> Hmm... HDF5 implements file locking in 1.10.x to prevent unauthorized access 
> to an HDF5 file (for example, file is opened for writing (non-SWMR) and 
> another process tries to write to it it). File locking is enabled if flock 
> (or similar) is available on the system. Configure checks if file locking is 
> available, but I think, we failed to check if it is disabled. We will take a 
> look into this situation.
> 
> Thank you for reporting!
> 
> Elena
> 
> 
>> 
>> On one of the clusters I run on we've got a Lustre file-system. However the 
>> admin's have deemed that file locking is too expensive and have disabled it. 
>> Here's the mount information:
>> 
>> mds01ib@o2ib1:mds02ib@o2ib1:/scratch on /lustre/janus_scratch type 
>> lustre (rw,noauto,_netdev)
>> 
>> So when I run a very simple test to create a HDF5 with version 1.10.0 on 
>> this file system it fails:
>> 
>> janus-compile1 ~$ ./test /lustre/janus_scratch/tibr1099/foo.h5
>> HDF5-DIAG: Error detected in HDF5 (1.10.0) thread 0:
>> #000: H5F.c line 491 in H5Fcreate(): unable to create file
>>   major: File accessibilty
>>   minor: Unable to open file
>> #001: H5Fint.c line 1168 in H5F_open(): unable to lock the file or 
>> initialize file structure
>>   major: File accessibilty
>>   minor: Unable to open file
>> #002: H5FD.c line 1821 in H5FD_lock(): driver lock request failed
>>   major: Virtual File Layer
>>   minor: Can't update object
>> #003: H5FDsec2.c line 939 in H5FD_sec2_lock(): unable to flock file, errno = 
>> 38, error message = 'Function not implemented'
>>   major: File accessibilty
>>   minor: Bad file ID accessed
>> Unable to open: /lustre/janus_scratch/tibr1099/foo.h5:           -1
>> 1
>> 
>> When I strace the program I see it's because flock() failed:
>> 
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR) = 3 fstat(3, 
>> {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> close(3)                                = 0
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR|O_CREAT|O_TRUNC, 
>> 0666) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> flock(3, LOCK_EX|LOCK_NB)               = -1 ENOSYS (Function not 
>> implemented)
>> close(3)                                = 0
>> 
>> Versus if I trace the program with version 1.8.15:
>> 
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR) = 3 fstat(3, 
>> {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> close(3)                                = 0
>> open("/lustre/janus_scratch/tibr1099/foo.h5", O_RDWR|O_CREAT|O_TRUNC, 
>> 0666) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>> brk(0x235a000)                          = 0x235a000
>> mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 
>> -1, 0) = 0x7f17252b8000
>> 
>> So my long winded example leads to three questions.
>> 1) Do other HPC sites enable flock() on lustre? If so is it only localflock 
>> so as not to have the burden of a cluster wide flock?
>> 2) Is there a path forward for sites that don't enable flock?
>> 3) Is there the opposite of H5Fstart_swmr_write?
>> 
>> Thanks!
>> Tim<test.f90>_______________________________________________
>> Hdf-forum is for HDF software users discussion.
>> [email protected]
>> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.or
>> g
>> Twitter: https://twitter.com/hdf5
> 
> 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5
> 
> 
> 
> ------------------------------
> 
> Subject: Digest Footer
> 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> 
> 
> ------------------------------
> 
> End of Hdf-forum Digest, Vol 83, Issue 18
> *****************************************

_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5

Reply via email to