The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/fs/ntfs/usnjrnl.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * usnjrnl.h - NTFS kernel transaction log ($UsnJrnl) handling.  Part of the
    3  *             Linux-NTFS project.
    4  *
    5  * Copyright (c) 2005 Anton Altaparmakov
    6  *
    7  * This program/include file is free software; you can redistribute it and/or
    8  * modify it under the terms of the GNU General Public License as published
    9  * by the Free Software Foundation; either version 2 of the License, or
   10  * (at your option) any later version.
   11  *
   12  * This program/include file is distributed in the hope that it will be
   13  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
   14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   15  * GNU General Public License for more details.
   16  *
   17  * You should have received a copy of the GNU General Public License
   18  * along with this program (in the main directory of the Linux-NTFS
   19  * distribution in the file COPYING); if not, write to the Free Software
   20  * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   21  */
   22 
   23 #ifdef NTFS_RW
   24 
   25 #include <linux/fs.h>
   26 #include <linux/highmem.h>
   27 #include <linux/mm.h>
   28 
   29 #include "aops.h"
   30 #include "debug.h"
   31 #include "endian.h"
   32 #include "time.h"
   33 #include "types.h"
   34 #include "usnjrnl.h"
   35 #include "volume.h"
   36 
   37 /**
   38  * ntfs_stamp_usnjrnl - stamp the transaction log ($UsnJrnl) on an ntfs volume
   39  * @vol:        ntfs volume on which to stamp the transaction log
   40  *
   41  * Stamp the transaction log ($UsnJrnl) on the ntfs volume @vol and return
   42  * 'true' on success and 'false' on error.
   43  *
   44  * This function assumes that the transaction log has already been loaded and
   45  * consistency checked by a call to fs/ntfs/super.c::load_and_init_usnjrnl().
   46  */
   47 bool ntfs_stamp_usnjrnl(ntfs_volume *vol)
   48 {
   49         ntfs_debug("Entering.");
   50         if (likely(!NVolUsnJrnlStamped(vol))) {
   51                 sle64 stamp;
   52                 struct page *page;
   53                 USN_HEADER *uh;
   54 
   55                 page = ntfs_map_page(vol->usnjrnl_max_ino->i_mapping, 0);
   56                 if (IS_ERR(page)) {
   57                         ntfs_error(vol->sb, "Failed to read from "
   58                                         "$UsnJrnl/$DATA/$Max attribute.");
   59                         return false;
   60                 }
   61                 uh = (USN_HEADER*)page_address(page);
   62                 stamp = get_current_ntfs_time();
   63                 ntfs_debug("Stamping transaction log ($UsnJrnl): old "
   64                                 "journal_id 0x%llx, old lowest_valid_usn "
   65                                 "0x%llx, new journal_id 0x%llx, new "
   66                                 "lowest_valid_usn 0x%llx.",
   67                                 (long long)sle64_to_cpu(uh->journal_id),
   68                                 (long long)sle64_to_cpu(uh->lowest_valid_usn),
   69                                 (long long)sle64_to_cpu(stamp),
   70                                 i_size_read(vol->usnjrnl_j_ino));
   71                 uh->lowest_valid_usn =
   72                                 cpu_to_sle64(i_size_read(vol->usnjrnl_j_ino));
   73                 uh->journal_id = stamp;
   74                 flush_dcache_page(page);
   75                 set_page_dirty(page);
   76                 ntfs_unmap_page(page);
   77                 /* Set the flag so we do not have to do it again on remount. */
   78                 NVolSetUsnJrnlStamped(vol);
   79         }
   80         ntfs_debug("Done.");
   81         return true;
   82 }
   83 
   84 #endif /* NTFS_RW */

Cache object: 13c655c11aeee1a73f80d22b440b79c5


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.