[pacman-dev] Checking free space before transaction
Nezmer
git at nezmer.info
Thu Nov 11 15:49:42 CET 2010
On Thu, Nov 11, 2010 at 04:46:44PM +0200, Nezmer wrote:
> On Thu, Nov 11, 2010 at 09:09:27AM +1000, Allan McRae wrote:
> > On 11/11/10 07:29, Nezmer wrote:
> > >But with those changes pacman did not like my ZFS pool.
> >
> > From a bit of google, it looks like the statvfs call is probably
> > returning EOVERFLOW on that so we can probably just assume LOTS of
> > space and move on in those conditions...
> >
> > Allan
> >
> >
>
> That's over-simplification. This is the quick patch I needed to make
> this even compile.
> diff --git a/lib/libalpm/diskspace.c b/lib/libalpm/diskspace.c
> index 51c25ed..f382d3c 100644
> --- a/lib/libalpm/diskspace.c
> +++ b/lib/libalpm/diskspace.c
> @@ -80,7 +80,7 @@ static alpm_list_t *mount_point_list()
> endmntent(fp);
> #elif defined HAVE_GETMNTINFO
> int entries;
> - struct statvfs *fsp;
> + struct statfs *fsp;
>
> entries = getmntinfo(&fsp, MNT_NOWAIT);
>
from /usr/include/sys/mount.h:
int getmntinfo(struct statfs **, int);
> @@ -89,12 +89,12 @@ static alpm_list_t *mount_point_list()
> }
>
> for(; entries-- > 0; fsp++) {
> - if((&fsp)->f_bfree != 0) {
> + if(fsp->f_bfree != 0) {
> MALLOC(mp, sizeof(alpm_mountpoint_t), RET_ERR(PM_ERR_MEMORY, NULL));
> - mp->mount_dir = strdup(fsp->f_mntonname)
> + mp->mount_dir = strdup(fsp->f_mntonname);
>
> - MALLOC(mp->fsp, sizeof(struct statvfs), RET_ERR(PM_ERR_MEMORY, NULL));
> - memcpy((void *)(mp->fsp), (void *)fsp, sizeof(struct statvfs));
> + MALLOC(mp->fsp, sizeof(struct statfs), RET_ERR(PM_ERR_MEMORY, NULL));
> + memcpy((void *)(mp->fsp), (void *)fsp, sizeof(struct statfs));
>
> mp->blocks_needed = 0;
> mp->max_blocks_needed = 0;
>
More information about the pacman-dev
mailing list