ext4_jbd2.h (3d2b158262826e8b75bbbfb7b97010838dd92ac7) | ext4_jbd2.h (18aadd47f88464928b5ce57791c2e8f9f2aaece0) |
---|---|
1/* 2 * ext4_jbd2.h 3 * 4 * Written by Stephen C. Tweedie <sct@redhat.com>, 1999 5 * 6 * Copyright 1998--1999 Red Hat corp --- All Rights Reserved 7 * 8 * This file is part of the Linux kernel and is made available under --- 90 unchanged lines hidden (view full) --- 99#define EXT4_QUOTA_TRANS_BLOCKS(sb) 0 100#define EXT4_QUOTA_INIT_BLOCKS(sb) 0 101#define EXT4_QUOTA_DEL_BLOCKS(sb) 0 102#endif 103#define EXT4_MAXQUOTAS_TRANS_BLOCKS(sb) (MAXQUOTAS*EXT4_QUOTA_TRANS_BLOCKS(sb)) 104#define EXT4_MAXQUOTAS_INIT_BLOCKS(sb) (MAXQUOTAS*EXT4_QUOTA_INIT_BLOCKS(sb)) 105#define EXT4_MAXQUOTAS_DEL_BLOCKS(sb) (MAXQUOTAS*EXT4_QUOTA_DEL_BLOCKS(sb)) 106 | 1/* 2 * ext4_jbd2.h 3 * 4 * Written by Stephen C. Tweedie <sct@redhat.com>, 1999 5 * 6 * Copyright 1998--1999 Red Hat corp --- All Rights Reserved 7 * 8 * This file is part of the Linux kernel and is made available under --- 90 unchanged lines hidden (view full) --- 99#define EXT4_QUOTA_TRANS_BLOCKS(sb) 0 100#define EXT4_QUOTA_INIT_BLOCKS(sb) 0 101#define EXT4_QUOTA_DEL_BLOCKS(sb) 0 102#endif 103#define EXT4_MAXQUOTAS_TRANS_BLOCKS(sb) (MAXQUOTAS*EXT4_QUOTA_TRANS_BLOCKS(sb)) 104#define EXT4_MAXQUOTAS_INIT_BLOCKS(sb) (MAXQUOTAS*EXT4_QUOTA_INIT_BLOCKS(sb)) 105#define EXT4_MAXQUOTAS_DEL_BLOCKS(sb) (MAXQUOTAS*EXT4_QUOTA_DEL_BLOCKS(sb)) 106 |
107/** 108 * struct ext4_journal_cb_entry - Base structure for callback information. 109 * 110 * This struct is a 'seed' structure for a using with your own callback 111 * structs. If you are using callbacks you must allocate one of these 112 * or another struct of your own definition which has this struct 113 * as it's first element and pass it to ext4_journal_callback_add(). 114 */ 115struct ext4_journal_cb_entry { 116 /* list information for other callbacks attached to the same handle */ 117 struct list_head jce_list; 118 119 /* Function to call with this callback structure */ 120 void (*jce_func)(struct super_block *sb, 121 struct ext4_journal_cb_entry *jce, int error); 122 123 /* user data goes here */ 124}; 125 126/** 127 * ext4_journal_callback_add: add a function to call after transaction commit 128 * @handle: active journal transaction handle to register callback on 129 * @func: callback function to call after the transaction has committed: 130 * @sb: superblock of current filesystem for transaction 131 * @jce: returned journal callback data 132 * @rc: journal state at commit (0 = transaction committed properly) 133 * @jce: journal callback data (internal and function private data struct) 134 * 135 * The registered function will be called in the context of the journal thread 136 * after the transaction for which the handle was created has completed. 137 * 138 * No locks are held when the callback function is called, so it is safe to 139 * call blocking functions from within the callback, but the callback should 140 * not block or run for too long, or the filesystem will be blocked waiting for 141 * the next transaction to commit. No journaling functions can be used, or 142 * there is a risk of deadlock. 143 * 144 * There is no guaranteed calling order of multiple registered callbacks on 145 * the same transaction. 146 */ 147static inline void ext4_journal_callback_add(handle_t *handle, 148 void (*func)(struct super_block *sb, 149 struct ext4_journal_cb_entry *jce, 150 int rc), 151 struct ext4_journal_cb_entry *jce) 152{ 153 struct ext4_sb_info *sbi = 154 EXT4_SB(handle->h_transaction->t_journal->j_private); 155 156 /* Add the jce to transaction's private list */ 157 jce->jce_func = func; 158 spin_lock(&sbi->s_md_lock); 159 list_add_tail(&jce->jce_list, &handle->h_transaction->t_private_list); 160 spin_unlock(&sbi->s_md_lock); 161} 162 163/** 164 * ext4_journal_callback_del: delete a registered callback 165 * @handle: active journal transaction handle on which callback was registered 166 * @jce: registered journal callback entry to unregister 167 */ 168static inline void ext4_journal_callback_del(handle_t *handle, 169 struct ext4_journal_cb_entry *jce) 170{ 171 struct ext4_sb_info *sbi = 172 EXT4_SB(handle->h_transaction->t_journal->j_private); 173 174 spin_lock(&sbi->s_md_lock); 175 list_del_init(&jce->jce_list); 176 spin_unlock(&sbi->s_md_lock); 177} 178 |
|
107int 108ext4_mark_iloc_dirty(handle_t *handle, 109 struct inode *inode, 110 struct ext4_iloc *iloc); 111 112/* 113 * On success, We end up with an outstanding reference count against 114 * iloc->bh. This _must_ be cleaned up later. --- 213 unchanged lines hidden --- | 179int 180ext4_mark_iloc_dirty(handle_t *handle, 181 struct inode *inode, 182 struct ext4_iloc *iloc); 183 184/* 185 * On success, We end up with an outstanding reference count against 186 * iloc->bh. This _must_ be cleaned up later. --- 213 unchanged lines hidden --- |