'Umount this partition.
It\'s easier said than done to umount a partition.
We need to lock the mtab file to make sure we don\'t have any
locking problems if we are umounting in paralllel.
If there turns out to be a problem with the simple umount we
end up calling umount_force to get more  aggressive.
:param ignore_status: should we notice the umount status
:param record: if True, output result of umount operation to
autotest output'

def unmount(self, ignore_status=False, record=True):

    mountpoint = self.get_mountpoint()
    if (not mountpoint):
        if (record and (not ignore_status)):
            msg = ('umount    for    dev    %s    has    no    mountpoint' % self.device)
            self.job.record('FAIL', None, msg, 'Not    mounted')
        return
    umount_cmd = ('umount    ' + mountpoint)
    mtab = open('/etc/mtab')
    fcntl.flock(mtab.fileno(), fcntl.LOCK_EX)
    sys.stdout.flush()
    try:
        utils.system(umount_cmd)
        mtab.close()
        if record:
            self.job.record('GOOD', None, umount_cmd)
    except (error.CmdError, IOError):
        mtab.close()
        if self.unmount_force():
            return
        if (record and (not ignore_status)):
            self.job.record('FAIL', None, umount_cmd, error.format_error())
        raise
