1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== 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 |