code: def subvolume_list(path, parent_id=False, absolute=False,
                     ogeneration=False, generation=False,
                     subvolumes=False, uuid=False, parent_uuid=False,
                     sent_subvolume_uuid=False, snapshots=False,
                     readonly=False, deleted=False, generation_cmp=None,
                     ogeneration_cmp=None, sort=None):
      '''
      List the subvolumes present in the filesystem.
      path
          Mount point for the subvolume
      parent_id
          Print parent ID
      absolute
          Print all the subvolumes in the filesystem and distinguish
          between absolute and relative path with respect to the given
          <path>
      ogeneration
          Print the ogeneration of the subvolume
      generation
          Print the generation of the subvolume
      subvolumes
          Print only subvolumes below specified <path>
      uuid
          Print the UUID of the subvolume
      parent_uuid
          Print the parent uuid of subvolumes (and snapshots)
      sent_subvolume_uuid
          Print the UUID of the sent subvolume, where the subvolume is
          the result of a receive operation
      snapshots
          Only snapshot subvolumes in the filesystem will be listed
      readonly
          Only readonly subvolumes in the filesystem will be listed
      deleted
          Only deleted subvolumens that are ye not cleaned
      generation_cmp
          List subvolumes in the filesystem that its generation is >=,
          <= or = value. '+' means >= value, '-' means <= value, If
          there is neither '+' nor '-', it means = value
      ogeneration_cmp
          List subvolumes in the filesystem that its ogeneration is >=,
          <= or = value
      sort
          List subvolumes in order by specified items. Possible values:
          * rootid
          * gen
          * ogen
          * path
          You can add '+' or '-' in front of each items, '+' means
          ascending, '-' means descending. The default is ascending. You
          can combite it in a list.
      CLI Example:
      .. code-block:: bash
          salt '*' btrfs.subvolume_list /var/volumes/tmp
          salt '*' btrfs.subvolume_list /var/volumes/tmp path=True
          salt '*' btrfs.subvolume_list /var/volumes/tmp sort='[-rootid]'
      '''
      if sort and type(sort) is not list:
          raise CommandExecutionError('Sort parameter must be a list')
      valid_sorts = [
          ''.join((order, attrib)) for order, attrib in itertools.product(
              ('-', '', '+'), ('rootid', 'gen', 'ogen', 'path'))
      ]
      if sort and not all(s in valid_sorts for s in sort):
          raise CommandExecutionError('Value for sort not recognized')
      cmd = ['btrfs', 'subvolume', 'list']
      params = ((parent_id, '-p'),
                (absolute, '-a'),
                (ogeneration, '-c'),
                (generation, '-g'),
                (subvolumes, '-o'),
                (uuid, '-u'),
                (parent_uuid, '-q'),
                (sent_subvolume_uuid, '-R'),
                (snapshots, '-s'),
                (readonly, '-r'),
                (deleted, '-d'))
      cmd.extend(p[1] for p in params if p[0])
      if generation_cmp:
          cmd.extend(['-G', generation_cmp])
      if ogeneration_cmp:
          cmd.extend(['-C', ogeneration_cmp])
      if sort:
          cmd.append('--sort={}'.format(','.join(sort)))
      cmd.append(path)
      res = __salt__['cmd.run_all'](cmd)
      salt.utils.fsutils._verify_run(res)
      columns = ('ID', 'gen', 'cgen', 'parent', 'top level', 'otime',
                 'parent_uuid', 'received_uuid', 'uuid', 'path')
      result = []
      for line in res['stdout'].splitlines():
          table = {}
          for key in columns:
              value, line = _pop(line, key, key == 'path')
              if value:
                  table[key.lower()] = value
          if not line:
              result.append(table)
      return result