EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Bug in camserver for Pilatus detectors with large file systems
From: Mark Rivers <[email protected]>
To: support <[email protected]>, "'Stefan Brandstetter'" <[email protected]>, Clemens Schulze-Briese <[email protected]>
Cc: "'[email protected]'" <[email protected]>
Date: Mon, 18 May 2015 20:04:34 +0000

Folks,

 

We upgraded our disk array recently from 12TB to 24TB.  Once we did that camserver would no longer save images to that array. 

 

It gave the error message "***** Insufficient Disk Space *****" (which is rather ironic!)

 

I found and fixed the problem, which is in /p2_det/programs/tvx-7.3.13-121212b/camera/camserver/slsp2det_cam/util/interface.c

 

The problem is that the disk free size in blocks is being copied from the statfs structure (.f_bavail, where it is of type long) to a local variable of type int.

 

**********************************************************************

slsp2det_cam/util> diff -U5 interface.c.orig interface.c

--- interface.c.orig    2015-05-18 14:41:33.000000000 -0500

+++ interface.c 2015-05-18 14:42:32.000000000 -0500

@@ -1690,13 +1690,13 @@

#define TMPFS_MAGIC 0x01021994         // from statfs(2)

// MarM: loosend first requirements

//if ( ((disk_data.f_type != TMPFS_MAGIC) && ((disk_data.f_bavail - 150*n_images) <

// printf("check1: %i %i %i %i %i: %i %i %i\n",n,n_images,camera_wide,camera_high,camera_bpp,disk_data.f_blocks, disk_data.f_bavail, disk_data.f_bsize);

- int dsa = (disk_data.f_bavail);

- int overhead = 20*4096; // additional file system overhead and image header stuff

- int dsu =  n_images * ( (overhead + (camera_wide * camera_high*camera_bpp) / (8*n) ) / (disk_data.f_bsize) );

+ long dsa = (disk_data.f_bavail);

+ long overhead = 20*4096; // additional file system overhead and image header stuff

+ long dsu =  n_images * ( (overhead + (camera_wide * camera_high*camera_bpp) / (8*n) ) / (disk_data.f_bsize) );

  // printf("check2: %i < %i: %i\n", dsa,dsu,dsa<dsu);

  // if ( ( (disk_data.f_bavail - 150*n_images) <  ( (n_images/n) * (camera_wide * camera_high/disk_data.f_bsize) * (camera_bpp/8) ))  &&

  if ( (dsa<dsu)  &&

**********************************************************************

 

I asked recently if this version of TVX was the most recent, and was told that it was, so I am assuming that you have not already fixed this problem?

 

Thanks,

Mark

 

 


Replies:
Re: Bug in camserver for Pilatus detectors with large file systems Michel Staeuber

Navigate by Date:
Prev: RE: Problem building seq-2-2-1 on Windows Mark Rivers
Next: Re: Bug in camserver for Pilatus detectors with large file systems Michel Staeuber
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: scalcout fails to write to bo - (partially?) solved Mooney, Tim M.
Next: Re: Bug in camserver for Pilatus detectors with large file systems Michel Staeuber
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 16 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·