Changeset 2152


Ignore:
Timestamp:
Aug 23, 2012, 3:30:40 PM (7 years ago)
Author:
matthijs
Message:

mountd: Merge some elements of struct mount into a bitmask.

This should not change any behaviour, only changes the way a few flags
are stored in memory.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fon/mountd/src/lib/mount.c

    r2151 r2152  
    3131struct list_head mounts;
    3232
     33typedef enum {
     34        MS_MOUNTED = 1,
     35        MS_SUPPORTED = 2,
     36        MS_IGNORED = 4,
     37        MS_ERROR = 8,
     38} mount_status;
     39
    3340struct mount {
    3441        struct list_head list;
     
    3946        char model[64];
    4047        char rev[64];
    41         int mounted;
    42         int supported;
    43         int ignore;
     48        mount_status status; /* Bitmask */
    4449        char size[64];
    4550        char sector_size[64];
     
    215220                ucix_add_option(ctx, mountd, q->serial, "sector_size", q->sector_size);
    216221                snprintf(t, 64, "part%dmounted", atoi(&q->dev[3]));
    217                 ucix_add_option(ctx, mountd, q->serial, t, (q->mounted)?("1"):("0"));
     222                ucix_add_option(ctx, mountd, q->serial, t, (q->status & MS_MOUNTED)?("1"):("0"));
    218223                snprintf(t, 64, "part%dsupported", atoi(&q->dev[3]));
    219                 ucix_add_option(ctx, mountd, q->serial, t, (q->supported)?("1"):("0"));
     224                ucix_add_option(ctx, mountd, q->serial, t, (q->status & MS_SUPPORTED)?("1"):("0"));
    220225                ucix_add_option(ctx, mountd, q->serial, "vendor", q->vendor);
    221226                ucix_add_option(ctx, mountd, q->serial, "model", q->model);
     
    225230                snprintf(t, 64, "fs%d", atoi(&q->dev[3]));
    226231                ucix_add_option(ctx, mountd, q->serial, t, fs_names[q->fs]);
    227                 if(q->mounted)
     232                if(q->status & MS_MOUNTED)
    228233                        mounted++;
    229                 if((!q->ignore) && q->size && q->sector_size)
     234                if(!(q->status & MS_IGNORED) && q->size && q->sector_size)
    230235                        size = size + (((unsigned long long int)atoi(q->size)) * ((unsigned long long int)atoi(q->sector_size)));
    231236        }
     
    452457        strncpy(mount->size, size, 64);
    453458        strncpy(mount->sector_size, sector_size, 64);
    454         mount->ignore = ignore;
    455         mount->mounted = 0;
    456459        mount->fs = fs;
    457         mount->supported = mount->fs && mount->fs <= MAX_SUPPORTED;
     460        mount->status = 0;
     461        if (ignore)
     462                mount->status |= MS_IGNORED;
     463        if(mount->fs && mount->fs <= MAX_SUPPORTED)
     464                mount->status |= MS_SUPPORTED;
     465
    458466        for(i = 0; i < 16; i++)
    459467                mount->wd_path[i] = 0;
    460468        list_add(&mount->list, &mounts);
    461         if((!mount->ignore) && mount->supported)
     469        if(!(mount->status & MS_IGNORED) && (mount->status & MS_SUPPORTED))
    462470        {
    463471                log_printf("new mount : %s -> %s (%s)\n", name, dev, fs_names[mount->fs]);
     
    590598                        mount->wd_path[i] = strdup(tmp);
    591599                }
    592                 mount->mounted = 1;
     600                mount->status |= MS_MOUNTED;
    593601                mount_dump_uci_state();
    594602        } else return -1;
     
    612620        {
    613621                int i;
    614                 if(mount->mounted)
     622                if(mount->status & MS_MOUNTED)
    615623                {
    616624                        for(i = 0; i < 7; i++)
     
    622630                        }
    623631                }
    624                 mount->mounted = 0;
     632                mount->status &= ~MS_MOUNTED;
    625633        }
    626634        log_printf("finished unmounting\n");
     
    861869        if(mount)
    862870        {
    863                 if(mount->mounted)
     871                if(mount->status & MS_MOUNTED)
    864872                {
    865873                        int i;
     
    887895        {
    888896                struct mount *q = container_of(p, struct mount, list);
    889                 log_printf("* %s %s %d\n", q->name, q->dev, q->mounted);
     897                log_printf("* %s %s %d\n", q->name, q->dev, (q->status & MS_MOUNTED) ? 1 : 0);
    890898        }
    891899}
     
    10161024                t = uci_get_option(ctx, q->serial, tmp);
    10171025                uci_cleanup(ctx);
    1018                 if(t && !q->mounted)
     1026                if(t && !(q->status & MS_MOUNTED))
    10191027                {
    10201028                        if(!strcmp(t, "0"))
    10211029                        {
    1022                                 if(!q->ignore)
     1030                                if(!(q->status & MS_IGNORED))
    10231031                                        del = 1;
    10241032                        } else if(!strcmp(t, "1"))
Note: See TracChangeset for help on using the changeset viewer.